﻿using System;
using GeoAPI.Geometries;

namespace GeoAPI
{
	public interface IGeometryServices
	{
		int DefaultSRID { get; }

		ICoordinateSequenceFactory DefaultCoordinateSequenceFactory { get; }

		IPrecisionModel DefaultPrecisionModel { get; }

		IPrecisionModel CreatePrecisionModel(PrecisionModels modelType);

		IPrecisionModel CreatePrecisionModel(IPrecisionModel modelType);

		IPrecisionModel CreatePrecisionModel(double scale);

		IGeometryFactory CreateGeometryFactory();

		IGeometryFactory CreateGeometryFactory(int srid);

		IGeometryFactory CreateGeometryFactory(ICoordinateSequenceFactory coordinateSequenceFactory);

		IGeometryFactory CreateGeometryFactory(IPrecisionModel precisionModel);

		IGeometryFactory CreateGeometryFactory(IPrecisionModel precisionModel, int srid);

		IGeometryFactory CreateGeometryFactory(IPrecisionModel precisionModel, int srid, ICoordinateSequenceFactory coordinateSequenceFactory);

		void ReadConfiguration();

		void WriteConfiguration();
	}
}
